package http

import (
	"encoding/json"
	"fmt"
	"net/url"
	"reflect"
	"strconv"
)

type res struct {
	Code int         `json:"code"`
	Data interface{} `json:"data"`
	Msg  string      `json:"msg"`
}

type Groom struct {
	Owner           int64           //房管
	Number 			string
	DraginChips     uint32           //带入筹码
	SB       uint32          // 小盲注
	BB       uint32          // 大盲注
	Max      uint8           // 房间最大玩家人数
	RoomTime uint32			 // 房间结束时间（分钟）xx分钟后关闭房间
}

//创建房间后把房间数据上传到后台服务器
func Addgameroom(room *Groom) {
	data := url.Values{}
	owner := strconv.Itoa(int(room.Owner))
	drainChips := strconv.Itoa(int(room.DraginChips))
	sb := strconv.Itoa(int(room.SB))
	bb := strconv.Itoa(int(room.BB))
	time := strconv.Itoa(int(room.RoomTime))
	max := strconv.Itoa(int(room.Max))
	data.Set("roomId", room.Number)
	data.Set("roomCreateUser", owner)
	data.Set("roomOwner", owner)
	data.Set("chips", drainChips)
	data.Set("sb", sb)
	data.Set("bb", bb)
	data.Set("time", time)
	data.Set("max", max)
	data.Set("password", "")
	u := "http://game.ikiji.cn:8787/tcpapi/addgameroom"
	err,resp := HttpPostForm(u, data, nil, "")
	if err != nil {
		fmt.Println(err)
	}else{
		//解析post返回的json字符串
		res := res{}
		err := json.Unmarshal(resp, &res)
		//解析失败会报错，如json字符串格式不对，缺"号，缺}等。
		if err!=nil{
			fmt.Println(err)
		}
		fmt.Println("创建房间反馈",res)
		/*
			{
			  "code": 0,
			  "data": "",
			  "msg": "创建成功",
			}
		 */
	}
}

//关闭房间
func Endgameroom(roomId string){
	data := url.Values{}
	data.Set("roomId",roomId)
	u := "http://game.ikiji.cn:8787/tcpapi/endgameroom"
	err,resp := HttpPostForm(u, data, nil, "")
	if err != nil {
		fmt.Println(err)
	}else{
		//解析post返回的json字符串
		res := res{}
		err := json.Unmarshal(resp, &res)
		//解析失败会报错，如json字符串格式不对，缺"号，缺}等。
		if err!=nil{
			fmt.Println(err)
		}
		/*
			{
			  "code": 0,
			  "data": "",
			  "msg": "结束",
			}
		*/
	}
}

//更新用户房间编号
func SetUserGameId(outId int64, roomId string){
	data := url.Values{}
	out := strconv.Itoa(int(outId))
	data.Set("uId", out)
	data.Set("roomId", roomId)
	data.Set("gameId", "")

	u := "http://game.ikiji.cn:8787/tcpapi/setUserGameId"
	err,resp := HttpPostForm(u, data, nil, "")
	if err != nil {
		fmt.Println(err)
	}else{
		//解析post返回的json字符串
		res := res{}
		err := json.Unmarshal(resp, &res)
		//解析失败会报错，如json字符串格式不对，缺"号，缺}等。
		if err!=nil{
			fmt.Println(err)
		}
	}
}

func GetUserGameId(outId int64) map[string]string{
	data := url.Values{}
	out := strconv.Itoa(int(outId))
	data.Set("uId", out)
	/*
		{
		  "code": 0,
		  "data": {
			"gameId": "PIJQ2Rbkp1",//游戏对局编号
			"roomId": "654883"//游戏房间号
		  },
		  "msg": "获取成功"
		}
	 */
	u := "http://game.ikiji.cn:8787/tcpapi/getUserGameId"
	err,resp := HttpPostForm(u, data, nil, "")
	m := make(map[string]string)
	if err != nil {
		fmt.Println(err)
	}else{
		//解析post返回的json字符串
		res := res{}
		err := json.Unmarshal(resp, &res)
		//解析失败会报错，如json字符串格式不对，缺"号，缺}等。
		if err!=nil{
			fmt.Println(err)
		}

		rdata := make(map[string]interface{})

		switch reflect.ValueOf(res.Data).Kind() {
		case reflect.Map:
			rdata = res.Data.(map[string]interface{})
		}
		//fmt.Println(string(resp))

		roomId,ok := rdata["roomId"]
		if ok {
			m["roomId"] = roomId.(string)
		}else {
			m["roomId"] = ""
		}

		gameId,ok := rdata["gameId"]
		if ok {
			m["gameId"] = gameId.(string)
		}else {
			m["gameId"] = ""
		}

	}
	return m
}

func EndGameMatch(roomId string, gameId string, gameData string){
	data := url.Values{}
	data.Set("roomId",roomId)
	data.Set("gameId",gameId)
	data.Set("data",gameData)
	fmt.Println("房间号: ", roomId)
	fmt.Println("游戏编号: ", gameId)
	fmt.Println("游戏数据: ", gameData)
	u := "http://game.ikiji.cn:8787/tcpapi/EndGameMatch"
	err,resp := HttpPostForm(u, data, nil, "")
	fmt.Println(string(resp))
	if err != nil {
		fmt.Println(err)
	}else{
		//解析post返回的json字符串
		res := res{}
		err := json.Unmarshal(resp, &res)
		//解析失败会报错，如json字符串格式不对，缺"号，缺}等。
		if err!=nil{
			fmt.Println(err)
		}
		/*
			{
			  "code": 0,
			  "data": "",
			  "msg": "结束",
			}
		*/
	}
}

func UpdateGameMatchDetails(gameData string){
	fmt.Println("添加对局详情", gameData)
	data := url.Values{}
	data.Set("data",gameData)
	u := "http://game.ikiji.cn:8787/tcpapi/Updategamematchdetails"
	err,resp := HttpPostForm(u, data, nil, "")
	fmt.Println(string(resp))
	if err != nil {
		fmt.Println(err)
	}else{
		//解析post返回的json字符串
		res := res{}
		err := json.Unmarshal(resp, &res)
		//解析失败会报错，如json字符串格式不对，缺"号，缺}等。
		if err!=nil{
			fmt.Println(err)
		}
	}
}
